package com.example.demo.factoryMethodModel;

/**
 * 工厂方法模式
 */
public class HumanFactory extends AbstractHumanFactory{

    @Override
    public <T extends Human> T createHuman(Class<T> c) {
        Human human = null;
        try {
            // Class.forName静态方法是为了动态加载类，加载完成后，要调用newInstance()来实例化对象以便操作
            human = (T) Class.forName(c.getName()).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (T)human;
    }
}
